本文介绍在Python Flask本地开发服务器配置SSL证书的具体步骤,包括下载和上传证书文件,在Flask run配置证书文件和证书密钥,以及安装证书后结果的验证。成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问Flask应用。
本文以Linux操作系统、Python 3.6和Flask 2.0.3为例进行介绍。不同版本的操作系统或Flask可能存在配置方法上的差异。
本文配置SSL证书的方法仅适用于开发环境。在实际生产环境中,若您的Flask网站使用Nginx等反向代理服务器对外提供服务,请在Nginx上配置SSL证书。具体操作,请参见Nginx或Tengine服务器配置SSL证书。
配置SSL证书过程中如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务。
前提条件
已通过数字证书管理服务控制台签发证书。具体操作,请参见购买SSL证书(额度)和提交证书申请。
SSL证书绑定的域名已完成DNS解析,即您的域名已正确映射到主机IP地址。您可以通过控制台常用证书工具中的DNS生效验证,检测域名DNS解析是否生效。具体操作,请参见DNS生效验证。
已在Web服务器开放443端口(HTTPS通信的标准端口)。
如果您使用的是阿里云ECS服务器,请确保已经在安全组规则入方向添加TCP 443端口。具体操作,请参见管理安全组规则。
如果您使用的是其他云服务商或本地服务器,请确保在防火墙或安全组中开启TCP 443端口。
如果待部署SSL证书的网站计划部署在中国内地,则您需要按照工信部的相关要求完成ICP备案,否则将影响网站的正常访问。更多信息,请参见什么是ICP备案。
步骤一:下载SSL证书
登录数字证书管理服务控制台。
在左侧导航栏,选择。
在SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。
在服务器类型为其他的操作列,单击下载。
解压缩已下载的SSL证书压缩包。
根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。
CSR生成方式
证书压缩包包含的文件
系统生成或选择已有的CSR
证书文件(PEM格式):Flask支持安装PEM格式的证书文件。PEM格式的证书文件是采用Base64编码的文本文件,且包含完整证书链。解压后,该文件以
证书ID_证书绑定域名
命名。私钥文件(KEY格式):默认以证书绑定域名命名。
手动填写
如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。
如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换。
步骤二:在Flask网站安装证书
执行以下命令,在Linux服务器的
/
目录下创建一个用于存放证书的目录。mkdir /ssl #创建证书目录,命名为ssl。
将证书文件和私钥文件上传到Linux服务器的证书目录(
/ssl
)。说明您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTY、Xshell或WinSCP等。如果您使用的是阿里云云服务器 ECS,上传文件具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件或上传文件到Linux云服务器。
打开Flask应用文件,参考以下示例代码配置证书。
以下是一段完整的Flask应用示例代码。您可以复制代码内容,并在修改证书路径后保存为test.py以进行测试运行。
# 引入 flask web 框架 from flask import Flask app = Flask(__name__) @app.route("/") def main(): return "<p>Hello, World!</p>" # 配置SSL证书 # HTTPS的默认访问端口443。 # 配置443端口和证书绝对路径。'/ssl/cert.pem'需替换为证书文件绝对路径。'/ssl/cert.key'需替换为证书私钥绝对路径。 context = (r'/ssl/cert.pem', r'/ssl/cert.key') app.run(host="0.0.0.0", port=443, ssl_context=context)
步骤三:重启Flask应用验证SSL证书是否配置成功
证书安装完成后,您可通过访问证书绑定的域名验证该证书是否安装成功。
https://yourdomain #需要将yourdomain替换成证书绑定的域名。
如果网页地址栏出现小锁标志,表示证书已经安装成功。